﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using TheBullysStore.Models.ModuloAdministracion.Usuario;
using log4net;

namespace TheBullysStore.Models.ModuloServicios.QuejasySugerencias
{
    public class QuejasySugerenciasDAO : Controller
    {
        private static ILog log = LogManager.GetLogger(typeof(QuejasySugerenciasDAO));
        UsuarioBean persona = new UsuarioBean();
        //
        // GET: /QuejasySugerenciasDAO/
        public string RegistrarCuotaExtraordinaria(QuejasySugerenciasBean quejaySugerencia)
        {
            SqlConnection sqlCon = null;
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;              
                sqlCon = new SqlConnection(cadenaConfiguracion);
                string commandString = "";
                if (quejaySugerencia.Anonimo == 1)
                {
                    commandString += "INSERT INTO quejas_sugerencias (Descripcion,Lugar,estado,idEdificio,fecha,tipo) " +
                    "VALUES ('" + quejaySugerencia.Descripcion + "','" + quejaySugerencia.Lugar + "',1," + quejaySugerencia.IdEdificio +
                    ",convert(datetime,'" + quejaySugerencia.Fecha + "',103)," + quejaySugerencia.Tipo + ")";
                }
                else
                {
                    commandString += "INSERT INTO quejas_sugerencias (Descripcion,Lugar,estado,idEdificio,fecha,tipo, Id_Persona) " +
                    "VALUES ('" + quejaySugerencia.Descripcion + "','" + quejaySugerencia.Lugar + "',1," + quejaySugerencia.IdEdificio +
                    ",convert(datetime,'" + quejaySugerencia.Fecha + "',103)," + quejaySugerencia.Tipo + ", " + quejaySugerencia.IdPersona + ")";
                    
                }
                sqlCon.Open();
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                sqlCon.Close();
                quejaySugerencia.Conexion = "Bien";
            }
            catch (Exception ex)
            {
                log.Error("Registrar Quejas y Sugerencias(EXCEPTION): ", ex);
                quejaySugerencia.Conexion = "Conexion Fallida";
            }
            finally
            {
                sqlCon.Close();
            }
            return quejaySugerencia.Conexion;
        }

        public List<QuejasySugerenciasBean> ListarQuejasySugerencias(QuejasySugerenciasBean quejaySugerencia)
        {
            List<QuejasySugerenciasBean> listaQuejasySugerencias = null;
            SqlConnection sqlCon = null;
            try
            {
                listaQuejasySugerencias = new List<QuejasySugerenciasBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT q.*, e.nombre from quejas_sugerencias q, edificio e where q.idEdificio = e.id_Edificio";


                if (quejaySugerencia.FechaInicial != null)
                { commandString += " and q.fecha >= convert(datetime,'" + quejaySugerencia.FechaInicial + "',103)"; }
                if (quejaySugerencia.FechaFinal != null)
                { commandString += " and q.fecha <= convert(datetime,'" + quejaySugerencia.FechaFinal + "',103)"; }
                if (quejaySugerencia.IdEdificio != 0)
                { commandString += " and q.idEdificio = " + quejaySugerencia.IdEdificio; }
                if (quejaySugerencia.Tipo != 0)
                { commandString += " and q.tipo = " + quejaySugerencia.Tipo; }
                if (quejaySugerencia.Estado == 0 || quejaySugerencia.Estado == 1)
                { commandString += " and q.estado = " + quejaySugerencia.Estado; }

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    QuejasySugerenciasBean QuejaySugerencia = new QuejasySugerenciasBean();
                    QuejaySugerencia.IdQuejas = (int)dataReader[0];
                    QuejaySugerencia.Descripcion = (string)dataReader[1];
                    QuejaySugerencia.Lugar = (string)dataReader[2];
                    if (!Convert.IsDBNull(dataReader[3]))
                    {
                        QuejaySugerencia.Anonimo = 2;
                    }
                    else
                    {
                        QuejaySugerencia.Anonimo = 1;
                    }
                    QuejaySugerencia.Estado = (int)dataReader[4];
                    QuejaySugerencia.IdEdificio = (int)dataReader[5];
                    QuejaySugerencia.Fecha = ((DateTime)dataReader[6]).ToString("dd/MM/yyyy");
                    QuejaySugerencia.Tipo = (int)dataReader[7];
                    QuejaySugerencia.NombreEdificio = (string)dataReader[8];
                    listaQuejasySugerencias.Add(QuejaySugerencia);
                }

                dataReader.Close();

            }
            catch (Exception ex)
            {
                log.Error("Listar Quejas y sugerencias (EXCEPTION): ", ex);
                listaQuejasySugerencias= null;
            }
            finally
            {
                sqlCon.Close();
            }
            return listaQuejasySugerencias;
        }

        public string modificarQuejaySugerencia(QuejasySugerenciasBean quejaySugerencia)
        {
            SqlConnection sqlCon = null;
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "UPDATE quejas_sugerencias SET Lugar = '" + quejaySugerencia.Lugar + "', Descripcion = '" +
                    quejaySugerencia.Descripcion + "' WHERE Id_Quejas = " + quejaySugerencia.IdQuejas;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();

                

                quejaySugerencia.Conexion = "Bien";

            }

            catch (Exception ex)
            {
                log.Error("Modificar Quejas y sugerencias (EXCEPTION): ", ex);
                quejaySugerencia.Conexion = "Conexion Fallida";
            }
            finally
            {
                sqlCon.Close();
            }

            return quejaySugerencia.Conexion;
        }
        public string EliminarQuejaySugerencia(QuejasySugerenciasBean quejaySugerencia)
        {
            SqlConnection sqlCon = null;
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "UPDATE quejas_sugerencias SET Estado = 0 WHERE Id_Quejas = "
                    + quejaySugerencia.IdQuejas;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();
                

                quejaySugerencia.Conexion = "Bien";
            }
            catch (Exception ex)
            {
                quejaySugerencia.Conexion = "Conexion Fallida";
                log.Error("Eliminar Quejas y sugerencias (EXCEPTION): ", ex);
            }
            finally
            {
                sqlCon.Close();
            }
            return quejaySugerencia.Conexion;
        }

        public QuejasySugerenciasBean BuscarDatos(QuejasySugerenciasBean quejaySugerencia)
        {
            SqlConnection sqlCon = null;
            QuejasySugerenciasBean datosUsuario = null;
            try
            {

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);
                datosUsuario = new QuejasySugerenciasBean();
                string commandString = "";
                sqlCon.Open();

                if (quejaySugerencia.Anonimo == 1)
                {
                    commandString += "SELECT Id_Persona, Correo, Id_Edificio, Nombres,Apellidos from persona where  usuario ='" + quejaySugerencia.Usr + "'";
                }
                else
                {
                    if (quejaySugerencia.Anonimo == 2)
                    {
                        commandString += "SELECT p.Id_Persona, p.Correo, p.Id_Edificio, p.Nombres, p.Apellidos  from persona p, quejas_sugerencias q where " +
                    " p.id_persona = q.id_persona and q.Id_Quejas =" + quejaySugerencia.IdQuejas;
                    }
                }

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    datosUsuario.IdPersona = (int)dataReader[0];
                    datosUsuario.Mail = (string)dataReader[1];
                    datosUsuario.IdEdificio = (int)dataReader[2];
                    datosUsuario.Nombres = (string)dataReader[3];
                    datosUsuario.Apellidos = (string)dataReader[4];
                }

            }
            catch (Exception ex)
            {
                log.Error("Buscar datos de personas Quejas y sugerencias (EXCEPTION): ", ex);
                datosUsuario=null;
            }
            finally
            {
                sqlCon.Close();
            }
            
            return datosUsuario;
        }

    }
}
